<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>refl-cpp: refl::trait Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">refl-cpp
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('namespacerefl_1_1trait.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">refl::trait Namespace Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Provides type-level operations for refl-cpp related use-cases.  
<a href="namespacerefl_1_1trait.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1append.html">append</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Appends a type to the list.  <a href="structrefl_1_1trait_1_1append.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html">as_tuple&lt; T&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a member typedef which is a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type.  <a href="structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html">as_type_list&lt; T&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a member typedef type which is a type_list with template type parameters equivalent to the type parameters of the provided type.  <a href="structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1concat.html">concat</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates N lists together.  <a href="structrefl_1_1trait_1_1concat.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1contains_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">contains&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether T is contained in the list of types.  <a href="structrefl_1_1trait_1_1contains_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1contains__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">contains_base&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether a type deriving from T is contained in the list of types.  <a href="structrefl_1_1trait_1_1contains__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1contains__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">contains_instance&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether an instance of the template T is contained in the list of types.  <a href="structrefl_1_1trait_1_1contains__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">filter&lt; Predicate, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filters a type_list according to a predicate template.  <a href="structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1get_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">get&lt; N, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a member typedef type which is the N-th type in the provided type_list.  <a href="structrefl_1_1trait_1_1get_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1index__of_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">index_of&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The index of the type in the type list, -1 if it doesn't exist.  <a href="structrefl_1_1trait_1_1index__of_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1index__of__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">index_of_base&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The index of the type in the type list that is derived from T, -1 if it doesn't exist.  <a href="structrefl_1_1trait_1_1index__of__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1index__of__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">index_of_instance&lt; T, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The index of the type in the type list that is a template instance of T, -1 if it doesn't exist.  <a href="structrefl_1_1trait_1_1index__of__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__container.html">is_container</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether objects of the type T support member .begin() and .end() operations.  <a href="structrefl_1_1trait_1_1is__container.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__descriptor.html">is_descriptor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A trait for detecting whether the type 'T' is a refl-cpp descriptor.  <a href="structrefl_1_1trait_1_1is__descriptor.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__field.html">is_field</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A trait for detecting whether the type 'T' is a field descriptor.  <a href="structrefl_1_1trait_1_1is__field.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__function.html">is_function</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A trait for detecting whether the type 'T' is a function descriptor.  <a href="structrefl_1_1trait_1_1is__function.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__instance.html">is_instance</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detects whether T is a template specialization.  <a href="structrefl_1_1trait_1_1is__instance.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__instance__of.html">is_instance_of</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detects whther the type U is a template specialization of T.  <a href="structrefl_1_1trait_1_1is__instance__of.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__member.html">is_member</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A trait for detecting whether the type 'T' is a member descriptor.  <a href="structrefl_1_1trait_1_1is__member.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__property.html">is_property</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether T is marked as a property.  <a href="structrefl_1_1trait_1_1is__property.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__proxy.html">is_proxy</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__reflectable.html">is_reflectable</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether there is reflection metadata for the type T.  <a href="structrefl_1_1trait_1_1is__reflectable.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1is__type.html">is_type</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detects whether the type T is a type_descriptor.  <a href="structrefl_1_1trait_1_1is__type.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">map&lt; Mapper, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a type_list according to a predicate template.  <a href="structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1prepend.html">prepend</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepends a type to the list.  <a href="structrefl_1_1trait_1_1prepend.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1remove__qualifiers.html">remove_qualifiers</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all reference and cv-qualifiers from T.  <a href="structrefl_1_1trait_1_1remove__qualifiers.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1reverse.html">reverse</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverses a list of types.  <a href="structrefl_1_1trait_1_1reverse.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1skip_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html">skip&lt; N, type_list&lt; Ts... &gt; &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skips the first N types in the provided type_list.  <a href="structrefl_1_1trait_1_1skip_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1trait_1_1unique.html">unique</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new list containing the repeating elements in the source list only once.  <a href="structrefl_1_1trait_1_1unique.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a281a1cb4e19fe3ff645e48867aa8daf1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a281a1cb4e19fe3ff645e48867aa8daf1"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a281a1cb4e19fe3ff645e48867aa8daf1">remove_qualifiers_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1remove__qualifiers.html">remove_qualifiers</a>&lt; T &gt;::type</td></tr>
<tr class="memdesc:a281a1cb4e19fe3ff645e48867aa8daf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all reference and cv-qualifiers from T.  <a href="namespacerefl_1_1trait.html#a281a1cb4e19fe3ff645e48867aa8daf1">More...</a><br /></td></tr>
<tr class="separator:a281a1cb4e19fe3ff645e48867aa8daf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90fc62b3597ebdeda8040ff78c0628c3"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename TypeList &gt; </td></tr>
<tr class="memitem:a90fc62b3597ebdeda8040ff78c0628c3"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a90fc62b3597ebdeda8040ff78c0628c3">get_t</a> = typename get&lt; N, TypeList &gt;::type</td></tr>
<tr class="memdesc:a90fc62b3597ebdeda8040ff78c0628c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The N-th type in the provided type_list.  <a href="namespacerefl_1_1trait.html#a90fc62b3597ebdeda8040ff78c0628c3">More...</a><br /></td></tr>
<tr class="separator:a90fc62b3597ebdeda8040ff78c0628c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cfe5ce0bb235343bab9b69d5115a738"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename TypeList &gt; </td></tr>
<tr class="memitem:a5cfe5ce0bb235343bab9b69d5115a738"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a5cfe5ce0bb235343bab9b69d5115a738">skip_t</a> = typename skip&lt; N, TypeList &gt;::type</td></tr>
<tr class="memdesc:a5cfe5ce0bb235343bab9b69d5115a738"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skips the first N types in the provided type_list.  <a href="namespacerefl_1_1trait.html#a5cfe5ce0bb235343bab9b69d5115a738">More...</a><br /></td></tr>
<tr class="separator:a5cfe5ce0bb235343bab9b69d5115a738"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2279db43338368acb8af9ade961a504"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae2279db43338368acb8af9ade961a504"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ae2279db43338368acb8af9ade961a504">as_type_list_t</a> = typename as_type_list&lt; T &gt;::type</td></tr>
<tr class="memdesc:ae2279db43338368acb8af9ade961a504"><td class="mdescLeft">&#160;</td><td class="mdescRight">A typedef for a type_list with template type parameters equivalent to the type parameters of the provided type.  <a href="namespacerefl_1_1trait.html#ae2279db43338368acb8af9ade961a504">More...</a><br /></td></tr>
<tr class="separator:ae2279db43338368acb8af9ade961a504"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7528d00a7777f3ea5bae8b6bb2814b26"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7528d00a7777f3ea5bae8b6bb2814b26"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a7528d00a7777f3ea5bae8b6bb2814b26">as_tuple_t</a> = typename as_tuple&lt; T &gt;::type</td></tr>
<tr class="memdesc:a7528d00a7777f3ea5bae8b6bb2814b26"><td class="mdescLeft">&#160;</td><td class="mdescRight">A typedef for a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type.  <a href="namespacerefl_1_1trait.html#a7528d00a7777f3ea5bae8b6bb2814b26">More...</a><br /></td></tr>
<tr class="separator:a7528d00a7777f3ea5bae8b6bb2814b26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4aae36e6ff8c6d3adb2cc91ba985e80"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:ab4aae36e6ff8c6d3adb2cc91ba985e80"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80">first</a> = get&lt; 0, TypeList &gt;</td></tr>
<tr class="memdesc:ab4aae36e6ff8c6d3adb2cc91ba985e80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses first type in the list.  <a href="namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80">More...</a><br /></td></tr>
<tr class="separator:ab4aae36e6ff8c6d3adb2cc91ba985e80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c142f0b5a366ee8b67c0009fa01c9d2"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a8c142f0b5a366ee8b67c0009fa01c9d2"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a8c142f0b5a366ee8b67c0009fa01c9d2">first_t</a> = typename <a class="el" href="namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80">first</a>&lt; TypeList &gt;::type</td></tr>
<tr class="memdesc:a8c142f0b5a366ee8b67c0009fa01c9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses last type in the list.  <a href="namespacerefl_1_1trait.html#a8c142f0b5a366ee8b67c0009fa01c9d2">More...</a><br /></td></tr>
<tr class="separator:a8c142f0b5a366ee8b67c0009fa01c9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11002f7ba1b41398115b0b102c0bacf0"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a11002f7ba1b41398115b0b102c0bacf0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0">last</a> = get&lt; TypeList::size - 1, TypeList &gt;</td></tr>
<tr class="memdesc:a11002f7ba1b41398115b0b102c0bacf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses last type in the list.  <a href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0">More...</a><br /></td></tr>
<tr class="separator:a11002f7ba1b41398115b0b102c0bacf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2260f346ec8347a51e5f40c626bb0e07"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a2260f346ec8347a51e5f40c626bb0e07"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a2260f346ec8347a51e5f40c626bb0e07">last_t</a> = typename <a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0">last</a>&lt; TypeList &gt;::type</td></tr>
<tr class="memdesc:a2260f346ec8347a51e5f40c626bb0e07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses last type in the list.  <a href="namespacerefl_1_1trait.html#a2260f346ec8347a51e5f40c626bb0e07">More...</a><br /></td></tr>
<tr class="separator:a2260f346ec8347a51e5f40c626bb0e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38acd7e400afcfd16d25d5c6ae09e65a"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a38acd7e400afcfd16d25d5c6ae09e65a"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a">tail</a> = skip&lt; 1, TypeList &gt;</td></tr>
<tr class="memdesc:a38acd7e400afcfd16d25d5c6ae09e65a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all but the first element of the list.  <a href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a">More...</a><br /></td></tr>
<tr class="separator:a38acd7e400afcfd16d25d5c6ae09e65a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96df3c32bb1b2672b5909aa9cca42cf9"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a96df3c32bb1b2672b5909aa9cca42cf9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a96df3c32bb1b2672b5909aa9cca42cf9">tail_t</a> = typename <a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a">tail</a>&lt; TypeList &gt;::type</td></tr>
<tr class="memdesc:a96df3c32bb1b2672b5909aa9cca42cf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all but the first element of the list.  <a href="namespacerefl_1_1trait.html#a96df3c32bb1b2672b5909aa9cca42cf9">More...</a><br /></td></tr>
<tr class="separator:a96df3c32bb1b2672b5909aa9cca42cf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9ae2dbbb031faf63f04ffd59f476140"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename TypeList &gt; </td></tr>
<tr class="memitem:ab9ae2dbbb031faf63f04ffd59f476140"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">take</a> = detail::take&lt; <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;&gt;, N, TypeList &gt;</td></tr>
<tr class="memdesc:ab9ae2dbbb031faf63f04ffd59f476140"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first N elements of the list.  <a href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">More...</a><br /></td></tr>
<tr class="separator:ab9ae2dbbb031faf63f04ffd59f476140"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08a7c33d3ef1f336360a68af8f14bc44"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename TypeList &gt; </td></tr>
<tr class="memitem:a08a7c33d3ef1f336360a68af8f14bc44"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a08a7c33d3ef1f336360a68af8f14bc44">take_t</a> = typename <a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">take</a>&lt; N, TypeList &gt;::type</td></tr>
<tr class="memdesc:a08a7c33d3ef1f336360a68af8f14bc44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first N elements of the list.  <a href="namespacerefl_1_1trait.html#a08a7c33d3ef1f336360a68af8f14bc44">More...</a><br /></td></tr>
<tr class="separator:a08a7c33d3ef1f336360a68af8f14bc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0240bb2e53db6d575271a9d5ebb8e85"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:ae0240bb2e53db6d575271a9d5ebb8e85"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85">init</a> = <a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">take</a>&lt; TypeList::size - 1, TypeList &gt;</td></tr>
<tr class="memdesc:ae0240bb2e53db6d575271a9d5ebb8e85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all but the last element of the list.  <a href="namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85">More...</a><br /></td></tr>
<tr class="separator:ae0240bb2e53db6d575271a9d5ebb8e85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73d3d356c430a7247749d0fb7fb037af"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a73d3d356c430a7247749d0fb7fb037af"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a73d3d356c430a7247749d0fb7fb037af">init_t</a> = typename <a class="el" href="namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85">init</a>&lt; TypeList &gt;::type</td></tr>
<tr class="memdesc:a73d3d356c430a7247749d0fb7fb037af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all but the last element of the list.  <a href="namespacerefl_1_1trait.html#a73d3d356c430a7247749d0fb7fb037af">More...</a><br /></td></tr>
<tr class="separator:a73d3d356c430a7247749d0fb7fb037af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07f78f44c53134d640b52d34ca1d9031"><td class="memTemplParams" colspan="2">template&lt;typename TypeList &gt; </td></tr>
<tr class="memitem:a07f78f44c53134d640b52d34ca1d9031"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a07f78f44c53134d640b52d34ca1d9031">reverse_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1reverse.html">reverse</a>&lt; TypeList &gt;::type</td></tr>
<tr class="memdesc:a07f78f44c53134d640b52d34ca1d9031"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverses a list of types.  <a href="namespacerefl_1_1trait.html#a07f78f44c53134d640b52d34ca1d9031">More...</a><br /></td></tr>
<tr class="separator:a07f78f44c53134d640b52d34ca1d9031"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cb4edd88d696f71ecbdc82783c6ded2"><td class="memTemplParams" colspan="2">template&lt;typename... Ts&gt; </td></tr>
<tr class="memitem:a7cb4edd88d696f71ecbdc82783c6ded2"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a7cb4edd88d696f71ecbdc82783c6ded2">concat_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1concat.html">concat</a>&lt; Ts... &gt;::type</td></tr>
<tr class="memdesc:a7cb4edd88d696f71ecbdc82783c6ded2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two lists together.  <a href="namespacerefl_1_1trait.html#a7cb4edd88d696f71ecbdc82783c6ded2">More...</a><br /></td></tr>
<tr class="separator:a7cb4edd88d696f71ecbdc82783c6ded2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a644910ba9f353221e50e2541a492e5cc"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TypeList &gt; </td></tr>
<tr class="memitem:a644910ba9f353221e50e2541a492e5cc"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a644910ba9f353221e50e2541a492e5cc">append_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1append.html">append</a>&lt; T, TypeList &gt;::type</td></tr>
<tr class="memdesc:a644910ba9f353221e50e2541a492e5cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Appends a type to the list.  <a href="namespacerefl_1_1trait.html#a644910ba9f353221e50e2541a492e5cc">More...</a><br /></td></tr>
<tr class="separator:a644910ba9f353221e50e2541a492e5cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8b29546446a5c8334ee733b161e6f3e"><td class="memTemplParams" colspan="2">template&lt;typename T , typename TypeList &gt; </td></tr>
<tr class="memitem:ab8b29546446a5c8334ee733b161e6f3e"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ab8b29546446a5c8334ee733b161e6f3e">prepend_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1prepend.html">prepend</a>&lt; T, TypeList &gt;::type</td></tr>
<tr class="memdesc:ab8b29546446a5c8334ee733b161e6f3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepends a type to the list.  <a href="namespacerefl_1_1trait.html#ab8b29546446a5c8334ee733b161e6f3e">More...</a><br /></td></tr>
<tr class="separator:ab8b29546446a5c8334ee733b161e6f3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb7c8b735416e75efa6443d59fe46493"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename &gt; typename Predicate, typename TypeList &gt; </td></tr>
<tr class="memitem:afb7c8b735416e75efa6443d59fe46493"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#afb7c8b735416e75efa6443d59fe46493">filter_t</a> = typename filter&lt; Predicate, TypeList &gt;::type</td></tr>
<tr class="memdesc:afb7c8b735416e75efa6443d59fe46493"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filters a type_list according to a predicate template with a static boolean member named "value" (e.g.  <a href="namespacerefl_1_1trait.html#afb7c8b735416e75efa6443d59fe46493">More...</a><br /></td></tr>
<tr class="separator:afb7c8b735416e75efa6443d59fe46493"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27b580a856a2aedc8487f28a4ded1c03"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename &gt; typename Mapper, typename... Ts&gt; </td></tr>
<tr class="memitem:a27b580a856a2aedc8487f28a4ded1c03"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a27b580a856a2aedc8487f28a4ded1c03">map_t</a> = typename map&lt; Mapper, Ts... &gt;::type</td></tr>
<tr class="memdesc:a27b580a856a2aedc8487f28a4ded1c03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a type_list according to a predicate template with a typedef named "type" (e.g.  <a href="namespacerefl_1_1trait.html#a27b580a856a2aedc8487f28a4ded1c03">More...</a><br /></td></tr>
<tr class="separator:a27b580a856a2aedc8487f28a4ded1c03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace2b39ac60915978d350f5921c7e5a47"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ace2b39ac60915978d350f5921c7e5a47"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#ace2b39ac60915978d350f5921c7e5a47">unique_t</a> = typename <a class="el" href="structrefl_1_1trait_1_1unique.html">unique</a>&lt; T &gt;::type</td></tr>
<tr class="memdesc:ace2b39ac60915978d350f5921c7e5a47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new list containing the repeating elements in the source list only once.  <a href="namespacerefl_1_1trait.html#ace2b39ac60915978d350f5921c7e5a47">More...</a><br /></td></tr>
<tr class="separator:ace2b39ac60915978d350f5921c7e5a47"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a9c31605a5aef99561286104c9a3da628"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9c31605a5aef99561286104c9a3da628"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1trait.html#a9c31605a5aef99561286104c9a3da628">is_type_v</a> { <a class="el" href="structrefl_1_1trait_1_1is__type.html">is_type</a>&lt;T&gt;::value }</td></tr>
<tr class="memdesc:a9c31605a5aef99561286104c9a3da628"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detects whether the type T is a type_descriptor.  <a href="namespacerefl_1_1trait.html#a9c31605a5aef99561286104c9a3da628">More...</a><br /></td></tr>
<tr class="separator:a9c31605a5aef99561286104c9a3da628"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Provides type-level operations for refl-cpp related use-cases. </p>
<p>The <a class="el" href="namespacerefl_1_1trait.html" title="Provides type-level operations for refl-cpp related use-cases.">refl::trait</a> namespace provides type-level operations useful for compile-time metaprogramming. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a644910ba9f353221e50e2541a492e5cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a644910ba9f353221e50e2541a492e5cc">&#9670;&nbsp;</a></span>append_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a644910ba9f353221e50e2541a492e5cc">refl::trait::append_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1append.html">append</a>&lt;T, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Appends a type to the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1trait_1_1prepend.html" title="Prepends a type to the list.">prepend</a> </dd></dl>

</div>
</div>
<a id="a7528d00a7777f3ea5bae8b6bb2814b26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7528d00a7777f3ea5bae8b6bb2814b26">&#9670;&nbsp;</a></span>as_tuple_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a7528d00a7777f3ea5bae8b6bb2814b26">refl::trait::as_tuple_t</a> = typedef typename as_tuple&lt;T&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A typedef for a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type. </p>
<p>The provided type must be a template specialization. </p><dl class="section see"><dt>See also</dt><dd>as_tuple </dd></dl>

</div>
</div>
<a id="ae2279db43338368acb8af9ade961a504"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2279db43338368acb8af9ade961a504">&#9670;&nbsp;</a></span>as_type_list_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ae2279db43338368acb8af9ade961a504">refl::trait::as_type_list_t</a> = typedef typename as_type_list&lt;T&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A typedef for a type_list with template type parameters equivalent to the type parameters of the provided type. </p>
<p>The provided type must be a template instance. </p><dl class="section see"><dt>See also</dt><dd>as_type_list </dd></dl>

</div>
</div>
<a id="a7cb4edd88d696f71ecbdc82783c6ded2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cb4edd88d696f71ecbdc82783c6ded2">&#9670;&nbsp;</a></span>concat_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a7cb4edd88d696f71ecbdc82783c6ded2">refl::trait::concat_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1concat.html">concat</a>&lt;Ts...&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Concatenates two lists together. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1trait_1_1concat.html" title="Concatenates N lists together.">concat</a> </dd></dl>

</div>
</div>
<a id="afb7c8b735416e75efa6443d59fe46493"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb7c8b735416e75efa6443d59fe46493">&#9670;&nbsp;</a></span>filter_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; typename Predicate, typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#afb7c8b735416e75efa6443d59fe46493">refl::trait::filter_t</a> = typedef typename filter&lt;Predicate, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Filters a type_list according to a predicate template with a static boolean member named "value" (e.g. </p>
<p>std::is_trivial) </p><dl class="section see"><dt>See also</dt><dd>filter </dd></dl>

</div>
</div>
<a id="ab4aae36e6ff8c6d3adb2cc91ba985e80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4aae36e6ff8c6d3adb2cc91ba985e80">&#9670;&nbsp;</a></span>first</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80">refl::trait::first</a> = typedef get&lt;0, TypeList&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accesses first type in the list. </p>

</div>
</div>
<a id="a8c142f0b5a366ee8b67c0009fa01c9d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c142f0b5a366ee8b67c0009fa01c9d2">&#9670;&nbsp;</a></span>first_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a8c142f0b5a366ee8b67c0009fa01c9d2">refl::trait::first_t</a> = typedef typename <a class="el" href="namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80">first</a>&lt;TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accesses last type in the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0" title="Accesses last type in the list.">last</a> </dd></dl>

</div>
</div>
<a id="a90fc62b3597ebdeda8040ff78c0628c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90fc62b3597ebdeda8040ff78c0628c3">&#9670;&nbsp;</a></span>get_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a90fc62b3597ebdeda8040ff78c0628c3">refl::trait::get_t</a> = typedef typename get&lt;N, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The N-th type in the provided type_list. </p>
<dl class="section see"><dt>See also</dt><dd>get </dd></dl>

</div>
</div>
<a id="ae0240bb2e53db6d575271a9d5ebb8e85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0240bb2e53db6d575271a9d5ebb8e85">&#9670;&nbsp;</a></span>init</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85">refl::trait::init</a> = typedef <a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">take</a>&lt;TypeList::size - 1, TypeList&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns all but the last element of the list. </p>

</div>
</div>
<a id="a73d3d356c430a7247749d0fb7fb037af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73d3d356c430a7247749d0fb7fb037af">&#9670;&nbsp;</a></span>init_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a73d3d356c430a7247749d0fb7fb037af">refl::trait::init_t</a> = typedef typename <a class="el" href="namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85">init</a>&lt;TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns all but the last element of the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a" title="Returns all but the first element of the list.">tail</a> </dd></dl>

</div>
</div>
<a id="a11002f7ba1b41398115b0b102c0bacf0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11002f7ba1b41398115b0b102c0bacf0">&#9670;&nbsp;</a></span>last</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0">refl::trait::last</a> = typedef get&lt;TypeList::size - 1, TypeList&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accesses last type in the list. </p>

</div>
</div>
<a id="a2260f346ec8347a51e5f40c626bb0e07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2260f346ec8347a51e5f40c626bb0e07">&#9670;&nbsp;</a></span>last_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a2260f346ec8347a51e5f40c626bb0e07">refl::trait::last_t</a> = typedef typename <a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0">last</a>&lt;TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accesses last type in the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0" title="Accesses last type in the list.">last</a> </dd></dl>

</div>
</div>
<a id="a27b580a856a2aedc8487f28a4ded1c03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27b580a856a2aedc8487f28a4ded1c03">&#9670;&nbsp;</a></span>map_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; typename Mapper, typename... Ts&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a27b580a856a2aedc8487f28a4ded1c03">refl::trait::map_t</a> = typedef typename map&lt;Mapper, Ts...&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Transforms a type_list according to a predicate template with a typedef named "type" (e.g. </p>
<p>std::remove_reference) </p><dl class="section see"><dt>See also</dt><dd>map </dd></dl>

</div>
</div>
<a id="ab8b29546446a5c8334ee733b161e6f3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8b29546446a5c8334ee733b161e6f3e">&#9670;&nbsp;</a></span>prepend_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ab8b29546446a5c8334ee733b161e6f3e">refl::trait::prepend_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1prepend.html">prepend</a>&lt;T, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prepends a type to the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1trait_1_1prepend.html" title="Prepends a type to the list.">prepend</a> </dd></dl>

</div>
</div>
<a id="a281a1cb4e19fe3ff645e48867aa8daf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a281a1cb4e19fe3ff645e48867aa8daf1">&#9670;&nbsp;</a></span>remove_qualifiers_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a281a1cb4e19fe3ff645e48867aa8daf1">refl::trait::remove_qualifiers_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1remove__qualifiers.html">remove_qualifiers</a>&lt;T&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes all reference and cv-qualifiers from T. </p>
<p>Equivalent to std::remove_cvref_t which is not currently available on all C++17 compilers. </p>

</div>
</div>
<a id="a07f78f44c53134d640b52d34ca1d9031"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07f78f44c53134d640b52d34ca1d9031">&#9670;&nbsp;</a></span>reverse_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a07f78f44c53134d640b52d34ca1d9031">refl::trait::reverse_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1reverse.html">reverse</a>&lt;TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reverses a list of types. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1trait_1_1reverse.html" title="Reverses a list of types.">reverse</a> </dd></dl>

</div>
</div>
<a id="a5cfe5ce0bb235343bab9b69d5115a738"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cfe5ce0bb235343bab9b69d5115a738">&#9670;&nbsp;</a></span>skip_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a5cfe5ce0bb235343bab9b69d5115a738">refl::trait::skip_t</a> = typedef typename skip&lt;N, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skips the first N types in the provided type_list. </p>
<dl class="section see"><dt>See also</dt><dd>skip </dd></dl>

</div>
</div>
<a id="a38acd7e400afcfd16d25d5c6ae09e65a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38acd7e400afcfd16d25d5c6ae09e65a">&#9670;&nbsp;</a></span>tail</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a">refl::trait::tail</a> = typedef skip&lt;1, TypeList&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns all but the first element of the list. </p>

</div>
</div>
<a id="a96df3c32bb1b2672b5909aa9cca42cf9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96df3c32bb1b2672b5909aa9cca42cf9">&#9670;&nbsp;</a></span>tail_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a96df3c32bb1b2672b5909aa9cca42cf9">refl::trait::tail_t</a> = typedef typename <a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a">tail</a>&lt;TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns all but the first element of the list. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a" title="Returns all but the first element of the list.">tail</a> </dd></dl>

</div>
</div>
<a id="ab9ae2dbbb031faf63f04ffd59f476140"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9ae2dbbb031faf63f04ffd59f476140">&#9670;&nbsp;</a></span>take</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">refl::trait::take</a> = typedef detail::take&lt;<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;&gt;, N, TypeList&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the first N elements of the list. </p>

</div>
</div>
<a id="a08a7c33d3ef1f336360a68af8f14bc44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08a7c33d3ef1f336360a68af8f14bc44">&#9670;&nbsp;</a></span>take_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename TypeList &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#a08a7c33d3ef1f336360a68af8f14bc44">refl::trait::take_t</a> = typedef typename <a class="el" href="namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140">take</a>&lt;N, TypeList&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the first N elements of the list. </p>

</div>
</div>
<a id="ace2b39ac60915978d350f5921c7e5a47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace2b39ac60915978d350f5921c7e5a47">&#9670;&nbsp;</a></span>unique_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1trait.html#ace2b39ac60915978d350f5921c7e5a47">refl::trait::unique_t</a> = typedef typename <a class="el" href="structrefl_1_1trait_1_1unique.html">unique</a>&lt;T&gt;::type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a new list containing the repeating elements in the source list only once. </p>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a9c31605a5aef99561286104c9a3da628"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c31605a5aef99561286104c9a3da628">&#9670;&nbsp;</a></span>is_type_v</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::trait::is_type_v { <a class="el" href="structrefl_1_1trait_1_1is__type.html">is_type</a>&lt;T&gt;::value }</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Detects whether the type T is a type_descriptor. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1trait_1_1is__type.html" title="Detects whether the type T is a type_descriptor.">is_type</a> </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacerefl.html">refl</a></li><li class="navelem"><a class="el" href="namespacerefl_1_1trait.html">trait</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
